package com.shujia;

import org.apache.hadoop.hive.ql.exec.UDF;

/**
 * 需求： 传入一个英文字符串，将其首字母变成大写，其他变成小写
 * 样例： SELECT myfunc('helLo') => Hello
 *
 *
 * 步骤：
 *  ① 构建项目，导入依赖，并创建自定义类
 *  ② 自定义类需要继承UDF类，并实现evaluate函数，注意该函数名称不能变更
 *  ③ 实现evaluate函数逻辑
 *  ④ 将项目进行打包，并上传至Linux中
 *  ⑤ 通过add jar 命令将当前jar包添加至hive的classPath路径中
 *      add jar /usr/local/soft/jars/hiveCode-1.0.jar;
 *  ⑥ 注册临时函数
 *      create temporary function myfunc as 'com.shujia.MyUDF';
 *  ⑦ 验证函数
 *
 * 注意：
 *      如果执行过程中发生错误，重新操作时，需要将HIVE的客户端关闭，重新执行上述步骤
 */

public class MyUDF extends UDF {
    // 该函数的参数类型既可以是Java的数据类型也可以为Hadoop的参数类型
    public String evaluate(String col) {
        String lowerCase = col.toLowerCase();
        String firstWord = lowerCase.substring(0, 1).toUpperCase();
        return firstWord + lowerCase.substring(1);
    }
}

/**
 * 问题：
 *      该方式不能对参数数量及参数类型进行判断
 */